package ltd.dujiabao.common.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.json.JsonMapper;
import lombok.extern.slf4j.Slf4j;

/**
 * @author Bowie Du
 * @date 2025/7/9 22:22
 */
@Slf4j
public class JsonUtils {
    private static final JsonMapper JSON_MAPPER = new JsonMapper();

    /**
     * 序列化：对象转JSON字符串
     *
     * @param obj
     * @return
     */
    public static String toJson(Object obj) {
        try {
            return JSON_MAPPER.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            log.error("to json error ", e);
            throw new RuntimeException(e);
        }
    }

    /**
     * 反序列化：JSON字符串转对象
     *
     * @param json
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T fromJson(String json, Class<T> clazz) {
        try {
            return JSON_MAPPER.readValue(json, clazz);
        } catch (JsonProcessingException e) {
            log.error("from json error ", e);
            throw new RuntimeException(e);
        }
    }
}
